// 有时候不知道对象类型的属性名，但是要约束属性类型，这时候可以用到索引签名，语法是{[任意名称:number| string]:属性值类型}
// 属性类型必须是字符串或数字
interface A {
  readonly  [prop:string]:string;
    // b:number    上面的索引签名规定了整个对象的属性和属性值，如果后面再添加属性的类型，需要满足索引签名的规则，否则报错
    // 如果后面要添加其他的属性类型，则索引签名的类型必须一致
}   //这里限制对象有字符串类型的属性，属性名未知，属性个数不限
const a:A = {
        b:'1',
        c:'2'
}
// a.b = '3'
// 以上对象添加的suoyou8属性都是只读